home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #093 (1990-10)(Amiga User Group Deutschland e.V.).zip
/
Franz PD Disk #093 (1990-10)(Amiga User Group Deutschland e.V.).adf
/
Redcode
/
Killer4
< prev
next >
Wrap
Text File
|
1990-09-11
|
6KB
|
138 lines
; Killer4
; -------
; Vergleicht jede 34. Speicherzelle mit 'dat 0' und versetzt einen
; einen Bereich um die Zelle, die ungleich 'dat 0' ist, mit 'JMP'-
; Befehlen, die auf eine Falle zeigen.
; Schaut dann nach, ob es was gefangen hat. Falls ja, Speicher mit 3
; Schritten löschen, falls nein, ein paar Tasks starten, die
; auch den Speicher löschen, und überlebenstask.
; Zweite Version.
zielbak MOV $1017, $1017 ;für zweiten Durchlauf
anzahlbak DAT 203
loop DAT 2 ;erster oder zweiter ?
anzahl DAT 204 ;Zähler für Minenleger
;etwas weiter vorne beginnen,
;da Feind nicht näher als 1000
;Zellen sein kann.
ziel MOV $1000, $1000 ;Zeiger auf Zieladresse, MOV,
;weil da beide Argumente sind,
;man kann einen Takt sparen!
start ADD #34, ziel ;Jede 20. Adresse
CMP #0, @ziel ;Vergleichen
JMP verminen ;wenn ungleich Null, löschen
DJN start, anzahl ;sonst nächste Zelle
CMP #0, zähler ;was gefangen?
JMP weiter ;Speicher löschen, sonst zweiten
;Durchlauf oder tasks
MOV zielbak, ziel
MOV anzahlbak, anzahl
DJN start, loop ;zweiter Durchlauf schon
;gemacht?
CMP #0, zähler ;was gefangen?
JMP weiter ;Speicher löschen
JMP tasks ;Nichts gefangen, also kleines
;Shitprogramm, splitten und
;hoffen.
zähler DAT 0 ;Anzahl Gefangene Tasks
grube JMP falle ;Fallgrube für Feind
falle ADD #1, zähler ;Indikator, anzahl gefangene
SPL 0 ;Falls später gegnerische Tasks
kill JMP -1 ;sterben, splitten, werden leider
;nicht mehr gezählt
zielkopie DAT $0
count DAT $0
verminen MOV ziel, zielkopie ;Kopie der Zieladresse machen
ADD #5, ziel ;Minen um Befehl streuen,
;der ungleich 'DAT 0' ist
MOV #10, count ;Schlaufenzähler initialisieren
SUB ziel, grube ;JMP-Rücksprungwert reinkopieren
ADD #14, grube ;und auf den richtigen Wert
;setzen, zeigt nun auf 'falle'
werfen ADD #1, grube ;für jeden Durchlauf ändern
MOV grube, <ziel ;JMP-Falle werfen
DJN werfen, count ;Fertig? Nein, dann weiter ver-
;minen
MOV zielkopie, ziel ;Kopie zurückspeichern
MOV grubebak, grube ;grube wieder auf falle richten
SUB #1, anzahl
JMP start
grubebak JMP 1 ;Zelle, die in grube gehört
ort DAT 100 ;Wohin wird Null kopiert
num DAT 2620 ;Zähler für Löschschlaufe
weiter MOV #0, @ort ;Speicher zu löschen beginnen
ADD #3, ort ;Zeiger 'ort' erhöhen
DJN weiter, num
MOV #3, kill ;Gegner töten
SPL tasks ;ebenfalls tasks starten
JMP 0 ;zum überleben....
tasks MOV -1, 7990 ;Insgesamt 6 tasks
SPL 7989 ;starten, so dass gnom überlebt
MOV -3, 7981 ;wird.
SPL 7980 ;und vielleicht auch was
SPL nummer1 ;anderes, wer weiss
SPL nummer2
SPL nummer3
SPL nummer4
SPL nummer5
DAT 50
DAT 0
DAT 0
nummer1 MOV #0, @-3
ADD #4, -4
JMP nummer1
JMP 0
DAT 0
DAT 0
DAT 1640
DAT 0
DAT 0
nummer2 MOV #0, @-3
ADD #4, -4
JMP nummer2
JMP 0
DAT 0
DAT 0
DAT 3230
DAT 0
DAT 0
nummer3 MOV #0, @-3
ADD #4, -4
JMP nummer3
JMP 0
DAT 0
DAT 0
DAT 4820
DAT 0
DAT 0
nummer4 MOV #0, @-3
ADD #4, -4
JMP nummer4
JMP 0
DAT 0
DAT 0
DAT 6410
DAT 0
DAT 0
nummer5 MOV #0, @-3
ADD #4, -4
JMP nummer5
JMP 0
DAT 0
DAT 0
DAT 0
DAT 0
DAT 0
DAT 0
DAT 0
DAT 0
DAT 0